-----------------------------------------------------------------------------------------------------------------------------------------------------

The data volume

$ sudo docker build -t mount-point-demo .

$ sudo docker inspect mount-point-demo

$ sudo docker run --rm -it mount-point-demo

root@8d22f73b5b46:/# ls -ld /MountPointDemo

root@8d22f73b5b46:/# mount

$ sudo docker inspect 8d22f73b5b46

$ sudo docker run v /MountPointDemo -it ubuntu:14.04

$ sudo docker rm -v 8d22f73b5b46

$ sudo docker rm -fv 8d22f73b5b46

-----------------------------------------------------------------------------------------------------------------------------------------------------

Sharing host data

$ sudo docker run -v /tmp/hostdir:/MountPoint \
-it ubuntu:14.04


root@4a018d99c133:/# ls -ld /MountPoint

root@4a018d99c133:/# mount

root@4a018d99c133:/# cd /MountPoint/
root@4a018d99c133:/MountPoint# touch {a,b,c}
root@4a018d99c133:/MountPoint# ls -l

$ sudo ls -l /tmp/hostdir/

$ sudo docker inspect \
--format={{.Volumes}} 4a018d99c133

$ touch /tmp/hostfile.txt

$ sudo docker run -v /tmp/hostfile.txt:/mountedfile.txt \
-it ubuntu:14.04


root@d23a15527eeb:/# ls -l /mountedfile.txt

root@d23a15527eeb:/# mount

root@d23a15527eeb:/# echo "Writing from Container" \
> mountedfile.txt

$ cat /tmp/hostfile.txt
Writing from Container

$ sudo docker inspect \
--format={{.Volumes}} d23a15527eeb

-----------------------------------------------------------------------------------------------------------------------------------------------------

The practicality of host data sharing


$ sudo docker run -d -p 80:80 \
-v /var/log/myhttpd:/var/log/apache2 apache2

$ cd /var/log/myhttpd

$ ls -1

$ tail -f *.log
-----------------------------------------------------------------------------------------------------------------------------------------------------

Sharing data between containers

Data-only containers

$ sudo docker run --name datavol \
-v /DataMount \
busybox:latest /bin/true
-----------------------------------------------------------------------------------------------------------------------------------------------------

Mounting data volume from other containers

$ sudo docker run it \
--volumes-from datavol \
ubuntu:latest /bin/bash

root@e09979cacec8:/# mount

$ sudo docker inspect e09979cacec8

root@e09979cacec8:/# echo \
"Data Sharing between Container" > \
/DataMount/testfile

$ sudo docker run --rm \
--volumes-from datavol \
busybox:latest cat /DataMount/testfile


$ sudo docker run --name vol1 --volumes-from datavol \
busybox:latest /bin/true
$ sudo docker run --name vol2 --volumes-from vol1 \
busybox:latest /bin/true
-----------------------------------------------------------------------------------------------------------------------------------------------------

The practicality of data sharing between containers

$ sudo docker build -t apache2log .

$ sudo docker run --name log_vol apache2log

$ sudo docker ps -a

$ sudo docker run -d -p 80:80 \
--volumes-from log_vol \
apache2

$ sudo docker run --rm \
--volumes-from log_vol
busybox:latest ls -l /var/log/apache2

$ sudo docker run --rm \
--volumes-from log_vol \
ubuntu:14.04 \
tail /var/log/apache2/error.log
-----------------------------------------------------------------------------------------------------------------------------------------------------

Avoiding common pitfalls

The undesirable effect of data volume

$ sudo docker build -t testvol .
-----------------------------------------------------------------------------------------------------------------------------------------------------

